Electronic communication devices contain a wide range of hardware resources to provide the different signal processing functions necessary to transmit and receive data signals. However, the discrete hardware resources by themselves do not coordinate input data, output data, enabling signals, etc. amongst the wide ranges of hardware resources. Consequently, a need arises for a controller to provide coordination between the wide range of hardware resources in an electronic communication device. Furthermore, the controller should be real time to accommodate a continual real-time flow of input data into the communication device and the resultant processed output data.
One method of controlling the hardware resources is to utilize a hardware-based controller that is designed for the specific application. However, a hardware-based controller can be very inflexible beyond its specific application. In contrast, wireless communication applications continue to proliferate to include such different systems as: fixed wireless, unlicensed Federal Communications Commission (FCC) wireless, local area network (LAN), cordless telephony, personal base station, telemetry, mobile wireless, encryption, and other digital data processing applications. While each of these applications utilizes spread spectrum communications, they generally utilize unique and sometimes incompatible data processing methodologies. Furthermore, new spread spectrum applications will continue to arise while existing spread spectrum applications continue to mature and evolve over time. These observations mean that existing and new spread spectrum applications will frequently use unique and apparently incompatible hardware and software resources, along with different methods of coordinating and operating them.
However, if a communication device implements a controller as an application specific integrated circuit (ASIC), then it can have limited flexibility. For example, if an ASIC controller is designed for a specific number of hardware resources in an electronic device and a specific operating scenario or usage rate of these hardware resources, then it may be difficult to implement the ASIC controller for a different application or operating environment. One solution is to design and implement a new ASIC device for different applications. But this practice of proliferating control devices to accommodate systems with varied standards and protocols can be costly in terms of design, testing, manufacturing, and infrastructure resources. Resultantly, a need arises for a method and apparatus of controlling hardware resources that overcomes the limited flexibility of an ASIC controller in order to accommodate the variation in spread spectrum communication systems.
Besides the application-specific limitation of an ASIC controller, the ASIC controller can have limited flexibility to accommodate performance failures in a system. For example, a controller can be designed to accommodate a very rigid set of performance criteria and protocol status. If even a single hardware resource, which comprises only a small fraction of the overall system, fails, then the overall system may fail because the controller may not be designed to accommodate failure modes. However, this paradigm is wasteful, especially when a very large percentage of the system is fully operational. Furthermore, this paradigm can be inconvenient to remedy as it may require replacement of chips, boards, or higher assembly parts that contain the failed part.
If a controller is designed as a sequential controller, then it can sequentially start and stop a series of hardware resources. After the controller receives a completion signal from a first hardware resource, the controller can then initiate a subsequent hardware resource. Unfortunately, this process can result in a system effect referred to as fragmenting. If hardware resources are left idle while a controller waits for an active hardware resource to complete its operation and send its completion signal to the controller, then the idle hardware does not contribute to the processing efficiency of the overall device. Thus, it is possible that fragmentation will decrease data throughput, while increasing propagation delay for the electronic device. As a result, a need arises for a controller that can overcome the effects of fragmenting the hardware resources that it controls.
An additional situation encountered in real-time operation of an electronic communication device is the frequent change in the device's operating environment or processing needs. For example, a wireless communication system has frequent changes in the number of users (calls are initiate and terminated) and the quality and quantity of signals (e.g., the multipaths signal to noise ratio and strength, quantity of data transmitted, type of data transmitted, etc.). In short, a communication system can be extremely dynamic in many aspects. If an ASIC controller is utilized, its ability to accommodate the changes in the system may be limited to those conceived of during the design of the hardware-based controller. Consequently, its ability to accommodate new variations in system dynamics can be limited. The performance of a controller can also be compromised by inefficient use of hardware resources in the dynamic environment, by system interruptions, system crashes, and compounded fragmenting due to the dynamically changing environment. Thus, a need arises for a controller that can overcome the limitations of, system interruptions, system crashes, compounded fragmenting, and inefficient use of hardware resources due to the dynamically changing environment and other factors. Furthermore, a need arises for a controller that can effectively accommodate the changes in the system without compromising the integrity of the system itself, including processes that have not changed.
However, given their complexity, quantity, and interactive requirements of hardware resources in an electronic device, it would be very difficult to manually and discretely control them individually. And to manually implement changes to the controller of hardware resources would be even more difficult because of possible conflicts and lack of debugging. In short, a user of an electronic device may desire to control the hardware resources and have flexibility in their control, but the user doesn't want the associated difficulty and complications of programming the individual devices themselves. Consequently, a need arises for a method and apparatus of controlling hardware resources that provides user with control and flexibility without the associated complexities and problems.
As with most electronic devices, power consumption can have detrimental effects such as generating heat, affecting lifespan, and consuming limited power resources such as batteries. The aforementioned issues involving flexibility, fragmenting, system compromises, etc. are typically detrimental to the power consumption of the electronic device. Consequently, a need arises for a controller that can overcome the limitations of inefficient management of hardware resources in terms of power consumption. The aforementioned limitations are generally applicable to all electronic devices.